package com.vanke.devops.domain.domain.systeminfo.impl;


import com.baomidou.mybatisplus.plugins.Page;
import com.vanke.devops.dal.dao.SystemInfoMapper;
import com.vanke.devops.dal.model.Endpoints;
import com.vanke.devops.dal.model.SystemInfo;
import com.vanke.devops.dal.util.collection.CollectionUtils;
import com.vanke.devops.domain.domain.endpoints.dto.EndpointsDTO;
import com.vanke.devops.domain.domain.systeminfo.ISystemInfoService;
import com.vanke.devops.domain.domain.systeminfo.dto.SysteminfoDTO;
import com.vanke.devops.domain.enums.EndpointsErrorCode;
import com.vanke.devops.domain.enums.SysteminfoErrorCode;
import com.vanke.devops.domain.manager.ssh.SSHConfig;
import com.vanke.devops.domain.utils.DesUtil;
import org.springframework.stereotype.Service;
import com.vanke.devops.domain.base.BaseServiceImpl;

import java.util.List;

/**
 * <p>
 * 用户表  服务实现类
 * </p>
 *
 * @author 马子晋
 * @since 2018-08-07
 */
@Service
public class SystemInfoServiceImpl extends BaseServiceImpl<SystemInfoMapper, SystemInfo> implements ISystemInfoService {
    @Override
    public SysteminfoDTO addSystemInfo(SystemInfo entity) {

        String loginId = DesUtil.encrypt(entity.getLoginId());
        String password = DesUtil.encrypt(entity.getPassword());
        entity.setLoginId(loginId);
        entity.setPassword(password);
        super.add(entity);
        return getInfo(entity);
    }

    @Override
    public void deleteSystemInfo(Integer id) {
        super.delete(id);

    }

    @Override
    public SysteminfoDTO updateSystemInfo(SystemInfo entity) {
        //数据加密
        String loginId = entity.getLoginId();
        String password = entity.getPassword();
        entity.setLoginId(DesUtil.encrypt(loginId));
        entity.setPassword(DesUtil.encrypt(password));
        super.update(entity);
        return getInfo(entity.getId());
    }

    @Override
    public SysteminfoDTO getInfo(Integer id) {
        SystemInfo entity = super.queryById(id);

        if(entity == null){
            throw SysteminfoErrorCode.NOT_FOUND_SYSTEM.getException();
        }

        return getInfo(entity);
    }

    @Override
    public Page<SysteminfoDTO> page(Integer pageSize, Integer pageNo) {
        Page<SystemInfo> page = super.queryPageByFieldsOrKeyword(pageNo,pageSize,new SystemInfo());
        Page<SysteminfoDTO> resultPage = new Page<>();
        List<SysteminfoDTO> list = CollectionUtils.selectListByCopy(page.getRecords(),SysteminfoDTO.class);
        resultPage.setRecords(list);
        resultPage.setTotal(page.getTotal());
        return resultPage;
    }

    @Override//模糊查询page
    public Page<SysteminfoDTO> queryPage(String type,String name, Integer pageSize, Integer pageNo)  {
        Page<SystemInfo> page = getPage(pageNo, pageSize, null, null);
        List<SystemInfo> list = baseMapper.queryPage(page,name,type);
        page.setRecords(list);
        Page<SysteminfoDTO> pagedto = getPage(pageNo, pageSize, null, null);
        List<SysteminfoDTO> listdto = CollectionUtils.selectListByCopy(page.getRecords(),SysteminfoDTO.class);
        pagedto.setRecords(listdto);
        return pagedto;

    }


    private SysteminfoDTO getInfo(SystemInfo entity){
        SysteminfoDTO dto = new SysteminfoDTO();
        dto.setName(entity.getName());
        dto.setCover(entity.getCover());
        dto.setAddress(entity.getAddress());
        dto.setName(entity.getName());
        dto.setType(entity.getType());
        dto.setLoginId(entity.getLoginId());
        dto.setPassword(entity.getPassword());
        dto.setIspublic(entity.getIspublic());
        //解密
        String loginId= DesUtil.decrypt(entity.getLoginId());
        String password = DesUtil.decrypt(entity.getPassword());
        dto.setLoginId(loginId);
        dto.setPassword(password);
        return dto;
    }
}